/*
 * Scheduler.h
 *
 *  Created on: Mar 9, 2012
 *      Author: Tosshunter
 */
#include "arraylist.h"
#include "queue.h"
#include "Process.h"
#ifndef SCHEDULER_H_
#define SCHEDULER_H_


typedef enum{
  PRIORITY, ROUND_ROBIN, LOTTERY
}SchedulerType;


typedef struct {
	Queue ready;            //queue of ready processes
	Queue blocked;          //queue of blocked processes
	PCBStr *running;         //current running process
	Queue * list;        //list of queues of processes
	SchedulerType type;     //type of scheduler, i.e., round robin,
	array_list lotteryPot;

} Scheduler;
void schedule(Scheduler *sh);
Scheduler * createScheduler(SchedulerType type);
#endif /* SCHEDULER_H_ */
